JavaScript 56.7%
TypeScript 42.6%
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { existsSync, readFileSync } from "fs";4import path from "path";5import mime from "mime-types";67const AVATARS_DIR = path.join(process.env.UPLOAD_DIR || "./uploads", "avatars");89export async function GET(10 _request: NextRequest,11 { params }: { params: { id: string } }12) {13 const user = await prisma.user.findUnique({14 where: { id: params.id },15 select: { avatarPath: true },16 });1718 if (!user || !user.avatarPath) {19 return NextResponse.json({ error: "Avatar introuvable" }, { status: 404 });20 }2122 const fullPath = path.join(AVATARS_DIR, user.avatarPath);23 if (!existsSync(fullPath)) {24 return NextResponse.json({ error: "Fichier avatar introuvable" }, { status: 404 });25 }2627 const buffer = readFileSync(fullPath);28 const mimeType = mime.lookup(user.avatarPath) || "image/png";2930 return new NextResponse(buffer, {31 headers: {32 "Content-Type": mimeType,33 "Cache-Control": "public, max-age=3600",34 },35 });36}37